# 如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法，或者不重写父类的构造方法。
# 子类不重写 __init__，实例化子类时，会自动调用父类定义的 __init__。
# 定义父类
class Phone:
    IMEI = None#序列号
    producer = "ITCAST"
    def call_by_4g(self):
        print("4g通话")

class NFCReader:
    nfc_type = "fifth generate"
    producer = "HM"
    def read_card(self):
        print("NFC读卡")
    def write_card(self):
        print("NFC写卡")
class RemoteControl:
    rc_type = "红外遥控"
    def control(self):
        print("红外遥控开启了")

"""子类，语法：
class 类名（父类名）：
   类内容体"""
class MyPhone(Phone, NFCReader, RemoteControl):#多继承
    pass#子类不添加其他功能，用pass补全内容
#创建对象
phone = MyPhone()
phone.call_by_4g()
phone.read_card()
phone.write_card()
phone.control()#继承各父类
print(phone.producer)#按顺序查找第一个父类
"""当使用多继承时，Python 采用广度优先的顺序来查找方法，
这意味着 Python 首先查找第一个父类（在继承列表中最靠前的）中的方法，如果没有找到，再查找后面的父类。
需要小心使用多继承，以避免复杂的继承关系和潜在的名称冲突问题。
在实际应用中，考虑使用组合而不是继承来避免这些复杂性。
"""
